//
// Created by francklinson on 2021/7/11 AT 21:04.
//
#include <iostream>
#include <vector>
#include <math.h>

using namespace std;

class Solution {
public:
    int bulbSwitch(int n) {
        /**
         * 记录对每个灯泡的操作次数
         */
        vector<int> bulbSwitch(n, 0);
        for (int i = 0; i < n; i++) {
            for (int j = i; j < n; j += i + 1) {
                ++bulbSwitch[j];
            }
        }
        int on = 0;
        for (auto &x:bulbSwitch) {
            if (x % 2 == 1) {
                ++on;
                cout << "1" << " ";
            } else cout << "0" << " ";
        }
        cout << endl;
        return on;
        /**
         * 对于灯泡k，它被切换的次数等于它的约数的个数 即 k % x == 0 的x的个数
         * 如果k不是一个完全平方数，那么它的约数必然成对出现，如6：2、3，这样以来就等于相互抵消
         * 因此，答案就是完全平方数的个数
         */
        int bulbSwitch2(int n) {
            return (int) sqrt(n);
        }
    }
};

int main() {
    Solution sol;
    cout << sol.bulbSwitch(1) << endl;
    cout << sol.bulbSwitch(2) << endl;
    cout << sol.bulbSwitch(3) << endl;
    cout << sol.bulbSwitch(4) << endl;
    cout << sol.bulbSwitch(5) << endl;
    cout << sol.bulbSwitch(6) << endl;
    cout << sol.bulbSwitch(7) << endl;
    cout << sol.bulbSwitch(8) << endl;
    cout << sol.bulbSwitch(9) << endl;
    cout << sol.bulbSwitch(10) << endl;
    cout << sol.bulbSwitch(11) << endl;
    cout << sol.bulbSwitch(16) << endl;
    cout << sol.bulbSwitch(25) << endl;

    return 0;
}

